local nl = require'luaNumeric'
require 'luaFDTD3D'
local plot = require "Q2DViewerEx"
require "Q3DViewer"

--===========================================================================--
--初始化参数
local DataPost={
	widgets={};
	data={};
	set_settings_str = Gallop.set_settings_str;
	get_settings_str = Gallop.get_settings_str;
};
--===========================================================================--

--===========================================================================--
--创建表和创建元表
function DataPost:new (o)
	o = o or {};
	self.__index = self;
	setmetatable(o,self)
	o:regist_funcs_to_gallop();
	o:init();
	return o;
end
--===========================================================================--

--===========================================================================--
--初始化
function DataPost:init ()

end
--===========================================================================--

--===========================================================================--
--注册全局函数
function DataPost:regist_funcs_to_gallop()
	Gallop.init_funcs['DataPost'] = function()
		local str = self.init_strs;
		assert( type('str')=='string', 'DataPost Plugin init string error' );
		if str ~= '' then
			Gallop.DataPost:set_settings_str(str)
		end
	end;
	
	Gallop.load_funcs['DataPost'] = function()
		local str = Geometry.get_setting( 'DataPost.Settings' )
		if str ~= '' then
			Gallop.DataPost:set_settings_str(str)
		end
		for k,v in pairs( self.data ) do 
			w = Gallop.DataPost:create_data_table_to_ui()
			w:set_data(v);
		end
	end;
	
	Gallop.presave_funcs['DataPost'] = function()
		local str = Gallop.DataPost:get_settings_str();
		--print('data post:',str)
		Geometry.set_setting( 'DataPost.Settings', str );
	end;
end
--===========================================================================--

--===========================================================================--
-- 保存和读取函数
--function DataPost:update_data_list_to_ui()
--end
--===========================================================================--


--===========================================================================--
-- 保存和读取函数
function DataPost:set_settings_str(str)
	Gallop.set_settings_str(self,str);
	local dataStr = undump_t(self.strData,'');
	self.data = {};
	for k,v in pairs( dataStr ) do 
		self.data[k] = undump_t(v);
	end
end

function DataPost:get_settings_str()
	local dataStr = {};
	for k,v in pairs( Gallop.DataPost.widgets ) do 
		d = v:get_data();
		dataStr[k] = nl.serialize(d);
	end
	self.strData = dump_t(dataStr,'');
	local str = Gallop.get_settings_str(self);
	return str;
end
--===========================================================================--

--===========================================================================--
--创建数据表[在UI中被覆盖，发射create table消息]
function DataPost:create_data_table_to_ui()
end
--===========================================================================--


return DataPost;
